 0217

//题目：
//
//输入一个整数数组，实现一个函数，
//
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分，
//
//所有偶数位于数组的后半部分。
int main()
{
	int a[] = { 1,2,8,9,4,10,3,5,6,0,7 };
	
	int left = 0;
	int sz = sizeof(a) / sizeof(a[0]);
	int right = sz-1;
	int tmp = 0;//临时中间变量
	int num = sz;//判断次数

	while (num)
	{
		if (a[left] % 2 == 0)//此时a[left]是偶数，则进行移位
		{
			//ou = i;//下一次判断的起始位置
			tmp = a[left];

			for (int j = left; j <= right - 1; j++)
			{

				a[j] = a[j + 1];
			}
			a[right] = tmp; //偶数放在数组末尾
		}
		else
		{
			left++;//a[left]不是偶数，则判断下一个a[left+1]
		}
		num--;
	}
	for (int  i = 0; i < sz; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}
//
//void swap_arr(int arr[], int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	int tmp = 0;
//
//
//	while (left < right)
//	{
//		// 从前往后，找到一个偶数，找到后停止
//		while ((left < right) && (arr[left] % 2 == 1))
//		{
//			left++;
//		}
//
//		// 从后往前找，找一个奇数，找到后停止
//		while ((left < right) && (arr[right] % 2 == 0))
//		{
//			right--;
//		}
//
//		// 如果偶数和奇数都找到，交换这两个数据的位置
//		// 然后继续找，直到两个指针相遇
//		if (left < right)
//		{
//			tmp = arr[left];
//			arr[left] = arr[right];
//			arr[right] = tmp;
//		}
//	}
//}

//void change(int a[], int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	while (left<right)
//	{
//		while ((left<right) && (a[left] % 2 == 1))
//		{
//			left++;
//		}
//		while ((left < right) && (a[right] % 2 == 0))
//		{
//			right--;
//		}
//		if (left < right)
//		{
//			int tmp = a[left];
//			a[left] = a[right];
//			a[right] = tmp;
//		}
//	}
//}
//
//void print(int a[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", a[i]);
//	}
//}
//
//int main()
//{
//	int a[] = { 1,2,8,9,4,10,3,5,6,0,7 };
//	int sz = sizeof(a) / sizeof(a[0]);
//	change(a, sz);
//	print(a, sz);
//	return 0;
//}